﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace HCMUS_SearchService_Group2
{
    /////////////////////////////////////////////////
    /// \brief Lớp Từ Khóa Dịch vụ DAO 
    /// \author Dương Văn Phong -   0912334.
    /// \details <h3>Cung cấp hàm Lấy danh sách từ khóa dịch vụ với chuỗi tương ứng</h3>
    public class ServiceKeyWordDAO : KeyWordDAO, IKeyWordObjectDAO
    {
        /////////////////////////////////////////////////
        /// \brief Lấy DS ServiceKeyDTO
        /// \param[in] Không.
        /// \returns  List<ServiceKeyDTO>.
        /// \details <h3>Trả về danh sách tất cả các ServiceKeyDTO trong Database.</h3>
        /////////////////////////////////////////////////
        public static List<ServiceKeyDTO> GetAllDTOKeyWord()
        {
            List<ServiceKeyDTO> lstServiceKey = new List<ServiceKeyDTO>();
            var lstResultKey = from data in DataConnectionHelper.Context.TUKHOADICHVUs
                               select data;
            foreach (var obj in lstResultKey)
            {
                ServiceKeyDTO temp = new ServiceKeyDTO();
                if (null != obj.MaDichVu)
                    temp.ServiceID = (int)obj.MaDichVu;
                temp.ServiceKeyID = obj.MaTuKhoaDichVu;
                temp.ServiceKeyWord = obj.TuKhoaDichVu1;
                lstServiceKey.Add(temp);
            }

            return lstServiceKey;
        }
        /////////////////////////////////////////////////
        /// \brief Hàm Lấy danh sách từ khóa Dịch vụ với chuỗi tương ứng
        /// \param[in] string
        /// \returns List<KeyWordDTO>
        /// \details <h3>Các bước thực hiện:</h3>
        /////////////////////////////////////////////////
        public List<KeyWordDTO> Search(string strInput)
        {
            /// - Bước 1: Khởi tạo danh sách dữ liệu
            List<ServiceKeyDTO> listTuKhoaDichVu = new List<ServiceKeyDTO>();
            List<KeyWordDTO> listTuKhoaDichVuDTO = new List<KeyWordDTO>();

            if (null != strInput)
            {
                strInput = strInput.Replace(@"'", @"''");

                /// - Bước 2: Truy vấn dữ liệu
                listTuKhoaDichVu = (
                    from emp in SearchHelper.ServiceKeys
                    where strInput.IndexOf(emp.ServiceKeyWord) != -1
                    select emp).ToList();

                /// - Bước 3: Chuyển đổi dữ liệu
                foreach (var tuKhoaDichVu in listTuKhoaDichVu)
                {
                    /*ServiceKeyDTO serviceKey = new ServiceKeyDTO();
                    serviceKey.ServiceID = Convert.ToInt32(tuKhoaDichVu.MaDichVu);
                    serviceKey.ServiceKeyID = Convert.ToInt32(tuKhoaDichVu.MaTuKhoaDichVu);
                    serviceKey.ServiceKeyWord = tuKhoaDichVu.TuKhoaDichVu1;*/
                    listTuKhoaDichVuDTO.Add(tuKhoaDichVu);
                }
            }

            /// - Bước 3: Return kết quả
            return listTuKhoaDichVuDTO;
        }
    }
}
